import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import com.lowagie.text.Chapter;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Section;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPRow;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

/**
 * 
 */

/**
 * 惠州市现代渔业示范基地建设项目合同书
 * @author zhangmz
 */
public class ModernFisheryContractPDF {

	/**
	 * 第一页
	 * @param doc 	doc 内容
	 * @param bank_par  换行
	 * @param titleFont 标题字体设置
	 * @param font		内容字体设置
	 * @param date		日期
	 * @param sdf		日期格式
	 * @throws DocumentException
	 * @throws IOException
	 */
	@SuppressWarnings({  "static-access", "unchecked" })
	private static void page1(Document doc,Paragraph bank_par,Font titleFont,Font font,Date date,SimpleDateFormat sdf) throws DocumentException, IOException{
		doc.add(bank_par);
		
		Paragraph titleP = new Paragraph("惠州市现代渔业示范基地建设项目\n管理合同书\n\n",
				titleFont);
		titleP.setAlignment(titleP.ALIGN_CENTER);
		doc.add(titleP);
		
		PdfPTable table = new PdfPTable(4);
		table.setHorizontalAlignment(Element.ALIGN_CENTER);
		table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.setWidthPercentage(80);
		int width[] = {30,40,0,0};//设置每列宽度比例   
		table.setWidths(width);  
		
		table.addCell(new Paragraph("项目名称：", font));
		PdfPCell cell = new PdfPCell(new Paragraph("测试项目名称啊啊啊啊啊啊啊", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目管理单位（甲方）：", font));
		cell = new PdfPCell(new Paragraph("甲方单位XXXXXXXXXXXX", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目承担单位（乙方）：", font));
		cell = new PdfPCell(new Paragraph("乙方单位XXXXX渔业公司", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("县（区）渔业主管部门：", font));
		cell = new PdfPCell(new Paragraph("主管单位XXXXXXXXXXX", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		for (PdfPRow row : (ArrayList<PdfPRow>) table.getRows()) {
			for (PdfPCell cells : row.getCells()) {
				if (cells != null) {
					cells.setPadding(8.0f);
					cells.setBorderWidth(0);
				}
			}
		}
		doc.add(table);
		//空白 四行
		doc.add(bank_par);
		
		BaseFont bf_booder = BaseFont.createFont("STSong-Light",
				"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
		Font bf_booderFont = new Font(bf_booder, 18, Font.NORMAL);
		Paragraph FirstPage_booder = new Paragraph("惠州市海洋与渔业局 \n"
				+ sdf.format(date) + " 年制\n\n", bf_booderFont);
		FirstPage_booder.setAlignment(FirstPage_booder.ALIGN_CENTER);
		doc.add(FirstPage_booder);
	}
	
	private static void page2(Document doc,Font Sec_titleFont,Font font) throws DocumentException{
		doc.newPage();
		
		doc.add(new Chunk("\n\n"));
		
		PdfPTable table = new PdfPTable(6);
		table.setWidthPercentage(90);
		int[] withs = {18,16,8,12,12,13};
		table.setWidths(withs);
		table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
		
		PdfPCell cell = new PdfPCell(new Paragraph("一、	基本信息\n",Sec_titleFont));
		cell.setColspan(6);
		cell.setMinimumHeight(30);
		cell.setBorderWidthTop(0);
		cell.setBorderWidthLeft(0);
		cell.setBorderWidthRight(0);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目名称",font));
		cell = new PdfPCell(new Paragraph("XXXXXX渔业项目",font));
		cell.setColspan(5);
		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		cell = new PdfPCell(new Paragraph("示范基地面积",font));
		cell.setNoWrap(true);
		table.addCell(cell);
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(2);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("主养品种",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(2);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new PdfPCell(new Paragraph("项目实施地点",font)));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(5);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目建设内容及目标",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(5);
		cell.setMinimumHeight(300);
		table.addCell(cell);

		table.addCell(new Paragraph("承担单位名称",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(5);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("通讯地址",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(2);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("银行帐号",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setColspan(2);
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目负责人",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("职务",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("电话",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("县(区)主管部门",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("联系人",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		table.addCell(new Paragraph("电话",font));
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(30);
		table.addCell(cell);
		
		doc.add(table);
	}
	
	/**
	 * 第三頁
	 * 可以重复调用
	 * @param doc
	 * @param font
	 * @param Sec_titleFont
	 * @throws DocumentException
	 * 
	 */
	private static void page3(Document doc,Font font,Font Sec_titleFont,String title,String content) throws DocumentException{
		doc.newPage();
		PdfPTable table = new PdfPTable(1);          
		table.setWidthPercentage(100);
		table.setSplitLate(false);
		String oneStr = content;
		PdfPCell cell =  new PdfPCell(new Paragraph(title,Sec_titleFont));
		cell.setMinimumHeight(30);
		//设置上下左右边框样式
		cell.setBorderWidth(1);
        cell.setBorderWidthTop(0);
        cell.setBorderWidthLeft(0);
        cell.setBorderWidthRight(0);
		table.addCell(cell);
		
		cell = new PdfPCell(new Paragraph(oneStr,font));
        cell.setMinimumHeight(700);
        cell.setBorderWidth(1);
        cell.setBorderWidthTop(0);
        table.addCell(cell);
		
        doc.add(table);
	}
	
	private static void page4(Document doc,BaseFont bfComic) throws DocumentException{
		doc.newPage();
		Font font5 = new Font(bfComic, 14, Font.NORMAL);
		Paragraph first_content_5 = new Paragraph("三、甲方责任\r" +
				"    1.负责审定下拨市财政扶持的现代渔业示范基地建设项目资金肆拾五万元（￥  万元），并负责项目资金的使用监管；\r" +
				"    2.负责对现代渔业示范基地建设进行技术指导和检查监督。\r" +
				"    3.负责对项目进行验收。\r" +
				"四、乙方责任\r" +
				"    1.负责按要求建设现代渔业养殖示范基地面积   亩（平方米），主养品种（或加工品种）为      。\r" +
				"    2.严格按照国家和省制定的有关操作规范进行生产管理，产品符合国家无公害食品要求。\r" +
				"    3.严格遵守相关财务制度，项目资金专款专用，专帐管理，报帐凭证真实、完整。配合接受甲方对项目资金使用的审计督查。\r" +
				"    4.乙方的法定代表人（或单位负责人）为项目第一责任人，对项目的建设和资金的使用负总责。\r" +
				"五、责任追究\r" +
				"    在项目建设和财政资金使用过程中，乙方如有下列情形的，甲方将按规定对项目进行整改、追究有关人员的责任；情节严重的，停止项目实施，追回财政资金，并移交司法部门处理：\r" +
				"    1.违反国家法律、法规和财经纪律；\r" +
				"    2.不履行本合同所承诺的责任和义务；\r" +
				"    3.弄虚作假骗取资金拔款；挤占、截留、挪用资金等。\r" +
				"六、本合同一式三份，甲、乙双方和项目属地县（区）渔业主管部门各执一份。",
				font5);
		first_content_5.setIndentationLeft(60);
		first_content_5.setIndentationRight(55);
		first_content_5.setLeading(32);
		doc.add(first_content_5);
	}
	
	private static void page5(Document doc,Font font,Paragraph bank_par) throws DocumentException{
		doc.newPage();
		doc.add(bank_par);
		doc.add(bank_par);
		doc.add(bank_par);
		doc.add(bank_par);
		doc.add(bank_par);
		PdfPTable table = new PdfPTable(6);
        table.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.getDefaultCell().setVerticalAlignment(3);
        table.setWidthPercentage(90);
        table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
        
        
        PdfPCell cell = new PdfPCell(new Paragraph("甲方负责人：",font));
        cell.setColspan(3);
        cell.setMinimumHeight(30);
        table.addCell(cell);
        
        cell = new PdfPCell(new Paragraph("乙方负责人：",font));
        cell.setColspan(3);
        cell.setMinimumHeight(30);
        table.addCell(cell);
       
        cell = new PdfPCell(new Paragraph("( 签名 )",font));
        cell.setColspan(3);
        cell.setMinimumHeight(40);
        table.addCell(cell);
        
        cell = new PdfPCell(new Paragraph("( 签名 )",font));
        cell.setColspan(3);
        cell.setMinimumHeight(40);
        table.addCell(cell);
        
        
        cell = new PdfPCell(new Paragraph("\n\n单位盖章：",font));
        cell.setColspan(3);
        cell.setMinimumHeight(50);
        table.addCell(cell);
        
        cell = new PdfPCell(new Paragraph("\n\n单位盖章：",font));
        cell.setColspan(3);
        cell.setMinimumHeight(50);
        table.addCell(cell);
        
        
        cell = new PdfPCell(new Paragraph("\n\n\n\n\n\n\n 合同签订日期：       年    月    日",font));
        cell.setColspan(6);
        cell.setMinimumHeight(100);
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        table.addCell(cell);
        for (PdfPRow row : (ArrayList<PdfPRow>) table.getRows()) {
			for (PdfPCell cells : row.getCells()) {
				if (cells != null) {
					cells.setPadding(8.0f);
					cells.setBorderWidth(0);
				}
			}
		}
        doc.add(table);
	}
	
	/**
	 * 主方法
	 * @throws DocumentException
	 * @throws IOException
	 */
	public static void createPDF() throws DocumentException, IOException{
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		Document doc = new Document(PageSize.A4);
		PdfWriter.getInstance(doc, new FileOutputStream("d:\\惠州市现代渔业示范基地建设项目管理合同书.pdf"));
		// 文档标题
		doc.addTitle("惠州市现代渔业示范基地建设项目管理合同书");
		/*System.out.println(content.getItemValueAsString("项目名称"));*/
		// 文档主题
		doc.addSubject("惠州市现代渔业示范基地建设项目管理合同书");
		// 文档作者
		doc.addAuthor("zmz");
		// 文档创建人
		doc.addCreator("zmz");
		// 关键字
		doc.addKeywords("惠州市现代渔业示范基地建设项目管理合同书");
		doc.open();
		//标题字体设置
		BaseFont bfTitle = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
				BaseFont.NOT_EMBEDDED);
		Font titleFont = new Font(bfTitle, 26, Font.BOLD);
		//内容字体
		BaseFont bfComic = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
		Font font = new Font(bfComic, 14, Font.NORMAL);
		Paragraph bank_par = new Paragraph("\n\n\n\n", font);
		//小标题
		Font Sec_titleFont = new Font(bfTitle, 18, Font.BOLD);
		//第一页
		page1(doc, bank_par, titleFont, font, date, sdf);
		//基本信息
		page2(doc,Sec_titleFont,font);
		//财政资金使用计划
		page3(doc,Sec_titleFont,font,"     二、财政资金使用计划","1111111111111111");
		//说明
		page4(doc,bfComic);
        //签收
		page5(doc,font,bank_par);
		doc.close();
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			createPDF();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
